#ifndef _ENV_H
#define _ENV_H
#include "simucpp.hpp"

class PendulumEnvironment {
public:
    PendulumEnvironment(double th=0, double dth=0);
    double Get_Reward();  // 返回当前状态的奖励
    std::vector<double> Get_State();  // 返回2维状态向量，包含位置和速度
    std::vector<double> Reset();  // 复位并返回2维状态向量
    std::vector<double> Step(double action);  // 采取一步动作，返回4维反馈：角度、角速度、奖励、是否结束
private:
    simucpp::Simulator _sim1;
    simucpp::UIntegrator* _intTheta=nullptr;
    simucpp::UIntegrator* _intDTheta=nullptr;
    simucpp::UFcn* _fcnThetaCycle=nullptr;
    simucpp::UFcnMISO* _misoDTheta=nullptr;
    simucpp::UConstant* _cnstPower=nullptr;
};
#endif  // _ENV_H
